﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using CapturarObjetos.Nucleo;
using CapturarObjetos.Objetos;

namespace CapturarObjetos.Controladores
{

    class ControladorEnergia
    {
        /// <summary>
        /// Content herdado do Game1 para poder criar as Energias.
        /// </summary>
        ContentManager Content;
        /// <summary>
        /// Lista com as energias
        /// </summary>
        List<Energia> Energias;

        /// <summary>
        /// Cria um novo controlador instanciando o Content e a lista de Energias vazia.
        /// </summary>
        /// <param name="Content"></param>
        public ControladorEnergia(ContentManager Content)
        {
            this.Content = Content;
            Energias = new List<Energia>();
        }

        /// <summary>
        /// Adiciona um item de Energia na posição escolhida.
        /// </summary>
        /// <param name="posicao">Posição X, Y e Z da Energia</param>
        public void AddEnergia(Vector3 posicao)
        {
            Energia energia = new Energia();
            energia.LoadContent(Content, "esfera");
            energia.Escala = 0.5f;
            energia.Posicao = posicao;
            energia.Ativo = true;

            Energias.Add(energia);
        }

        /// <summary>
        /// Adiciona um item de Energia em uma posição randomica.
        /// </summary>
        public void AddEnergiaRand()
        {
            Energia energia;
            Vector3 posicao;
            Random rand = new Random();
            int posX, posY, posZ;
            posX = (int)rand.Next(0,10) * (rand.Next(0,10)<=5? 1 : -1);
            posY = (int)rand.Next(0,10);
            posZ = (int)rand.Next(0,10) * (rand.Next(0, 10) <= 5 ? 1 : -1);
            posicao = new Vector3(posX, posY, posZ);

            foreach (Energia energia2 in Energias)
            {
                if (energia2.Posicao == posicao)
                {
                    AddEnergiaRand();
                    return;
                }
            }

            energia = new Energia();
            energia.LoadContent(Content, "esfera");
            energia.Escala = 0.5f;
            energia.Posicao = new Vector3(posX, posY, posZ);
            energia.Ativo = true;

            

            Energias.Add(energia);
        }

        public void Desenhar(Camera camera)
        {
            foreach (Energia energia in Energias)
            {
                energia.Desenhar(camera);
            }
        }

    }
}
